import { Rules } from "async-validator/dist-types"

// 验证用户名
const validateUsername = (rule: Rules, value: any, callback: (error: string | string[] | void) => void) : void => {
  let usernameRegex = new RegExp("^[0-9a-zA-Z_]{6,20}$")
  
  if(!usernameRegex.test(value)) {
    callback(new Error("用户名应由字母，数字或下划线组成, 长度6-20位"))
  } else {
    callback()
  }
}

// 验证密码
const validatePassword = (rule: Rules, value: any, callback: (error: string | string[] | void) => void) : void => {
  let pwdRegex = new RegExp("^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,20}$")
  if( !pwdRegex.test(value) ) {
    callback(new Error("密码包含 数字,英文,字符中的两种以上，长度6-20位"))
  } else {
    callback()
  }
}

const validateRePassword = (rule: Rules, value: any, callback: (error: string | string[] | void) => void) : void => {
  // 直接从网页获取的 状态，网页改了， 这里也就获取不到了
  if(document.getElementsByClassName("el-dialog")[0].getAttribute("aria-label") === "登录") {
    callback()
  }
  // 直接从网页获取的 密码，网页改了， 这里也就获取不到了
  if( value !== document.querySelector("div.password>input").value ) {
    callback(new Error("两次密码不一致"))
  } else {
    callback()
  }
}

// export { validateUsername, validatePassword, validateRePassword }
export { validateUsername, validatePassword, validateRePassword }